package org.ly.sys.module.pager;

import org.nutz.dao.Condition;
import org.nutz.dao.Dao;
import org.nutz.dao.QueryResult;
import org.nutz.dao.Sqls;
import org.nutz.dao.pager.Pager;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;

import java.util.List;
import java.util.Map;

public class myPager extends Pager {
	
	
	/**
	 * 根据实体分页查询
	 * @param dao
	 * @param obj
	 * @param cnd
	 * @param pager
	 * @return
	 */
    public <T> QueryResult listPage(Dao dao, Class<T> obj, Condition cnd,Pager pager) {

        List<T> list = dao.query(obj, cnd, pager);
        pager.setRecordCount(dao.count(obj, cnd));// 记录数需手动设置
        return new QueryResult(list, pager);

    }
    
    /**
     * 根据sql 返回分页查询 结果集
     * @param dao
     * @param sql
     * @param pager
     * @return
     */
    
    public <T> QueryResult listPageSql(Dao dao, Sql sql, Pager pager) {
      if(pager==null)
          return null;
      pager.setRecordCount(Daos.queryCount(dao, sql.getSourceSql()));// 记录数需手动设置
      sql.setPager(pager);
      sql.setCallback(Sqls.callback.records());
      dao.execute(sql); 
      return new QueryResult(sql.getList(Map.class), pager);
  }


}
